package com.cskaoyan.javase.array._2memory;

import java.util.Scanner;

/**
 * 定义两个数组：
 * 静态初始化一个数组，输出数组名，元素取值，长度
 * 然后声明第二个数组，把第一个数组的地址赋值给第二个数组。
 * 输出第二个数组的数组名，元素取值，长度
 * 然后给第二个数组赋值，再次输出两个数组的名及元素
 *
 * 一个经典的初学者问题
 *
 * 既然引用数据类型具有默认初始化，对象中的元素具有默认值，那为什么在局部位置声明一个数组后为什么不能立刻使用呢？
 *
 * 引用数据类型具有默认初始化,指的是引用数据类型堆上对象中的元素具有默认初始化
 * 而引用如果在栈上创建,是一个局部变量,局部变量没有默认值.
 *
 * @since 16:36
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr.length);
        System.out.println("-------------------");
        int[] arr2 = arr;
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
        System.out.println(arr2.length);
        System.out.println("-------------------");
        int[] arr3 = new int[3];
        System.out.println(arr3);
        System.out.println(arr3[0]);
        System.out.println(arr3[1]);
        System.out.println(arr3[2]);
        System.out.println(arr3.length);
        System.out.println("-------------------");

        System.out.println(arr == arr2);
        System.out.println(arr == arr3);
        System.out.println(arr2 == arr3);

    }
}
